﻿/* main.c */
#include "app.h"

/*******************************************************************************
 * Definitions
 ******************************************************************************/

/*******************************************************************************
 * Variables
 ******************************************************************************/

uint32_t tick_counter_val; /* 用于计时. */

static void app_func_end(void);

typedef void (* app_func_0_t)(void); /* 输入参数数量为0的函数指针 */

app_func_0_t funcs[] =
{
    /* cfft. */
    app_arm_cfft_f32_example,
    app_arm_cfft_q31_example,
    app_arm_cfft_q15_example,
    app_pq_cfft_f32_example,
    app_pq_cfft_q31_example,
    app_pq_cfft_q15_example,

    /* rfft. */
    app_arm_rfft_f32_example,
    app_arm_rfft_q31_example,
    app_arm_rfft_q15_example,
    /* app_pq_rfft_f32_example, */
    app_pq_rfft_q31_example,
    app_pq_rfft_q15_example,

    /* ifft. */
    app_arm_ifft_f32_example,
    app_arm_ifft_q31_example,
    app_arm_ifft_q15_example,
    app_pq_ifft_q31_example,
    app_pq_ifft_q15_example,

    //arm_ifft_q31Example,

    app_func_end /* the end. */
};

/*******************************************************************************
 * Prototypes
 ******************************************************************************/

/*******************************************************************************
 * Code
 ******************************************************************************/
/*!
 * @brief Main function
 */
int main(void)
{
    BOARD_InitHardware();

    PRINTF("\r\nPowerQuad FFT Engine Examples.\r\n\r\n");

    PQ_Init(POWERQUAD);

    while (1)
    {
        for (uint32_t i = 0u; i < (sizeof(funcs)/sizeof(funcs[0])); i++ )
        {
            GETCHAR();
            if (funcs != NULL)
            {
                (*funcs[i])();
            }
        }
    }
}

static void app_func_end(void)
{
    PRINTF("------------------------\r\n\r\n");
    PRINTF("-- A NEW CYCLE STARTS --\r\n");
}

/* EOF. */

